package binaryTree;

public class LeftLeafSum15 {

//    我来给出左叶子的明确定义：节点A的左孩子不为空，
//    且左孩子的左右孩子都为空（说明是叶子节点），那么A节点的左孩子为左叶子节点

//    那么判断当前节点是不是左叶子是无法判断的，
//    必须要通过节点的父节点来判断其左孩子是不是左叶子。

//    如果该节点的左节点不为空，该节点的左节点的左节点为空，
//    该节点的左节点的右节点为空，则找到了一个左叶子，判断代码如下：


//    public  void preOrderTraver(binaryTree.LayerOrderTraversal.TreeNode root, ArrayList list){
//        if (root==null){
//            return;
//        }
//        preOrderTraver(root.left,list);
//        list.add(root.val);
//        preOrderTraver(root.right,list);
//    }
public  int sum=0;
    public int sumOfLeftLeaves(TreeNode root) {
        traver(root,sum);
        return sum;
    }

    public  void  traver(TreeNode root,int sum){
        if (root==null){
            return;
        }
        if (root.left!=null&&root.left.left==null&root.left.right==null){
            this.sum+=root.left.val;
        }
       traver(root.left,sum);
       traver(root.right,sum);
    }

    public static void main(String[] args) {
        LeftLeafSum15 leftLeafSum15 = new LeftLeafSum15();
        TreeNode node1 = new TreeNode(1);
        TreeNode node2 = new TreeNode(1);
        TreeNode node3 = new TreeNode(1);
        node1.left=node2;
        node1.right=node3;
        System.out.println(leftLeafSum15.sumOfLeftLeaves(node1));
    }


}
